perm filename OU[1,LCS] blob sn#305790 filedate 1977-09-19 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	EXTERNAL FUNCTION GETINF(ARRAY J,INSR,INBT,INCH,INMX,INDR),
C00009 ENDMK
C⊗;
EXTERNAL FUNCTION GETINF(ARRAY J,INSR,INBT,INCH,INMX,INDR),
RDSMPL(ARRAY N,BITS),GETIN2(ARRAY J,INSR,INBT,INCH,INMX,INDR),
RDSMP2(ARRAY N,BITS),GETIN3(ARRAY J,INSR,INBT,INCH,INMX,INDR),
RDSMP3(ARRAY N,BITS),GETIN4(ARRAY J,INSR,INBT,INCH,INMX,INDR),
RDSMP4(ARRAY N,BITS);
 
ARRAY INF(1536);
VARIABLE /CNT,/RD,/SCNT,INCH,INSR,INMX,INDR,INBT,INBUF,DUR;
ARRAY IN2(1536);
VARIABLE /CNT2,/RD2,/SCNT2,INCH2,INSR2,INMX2,INDR2,INBT2,INBUF2;
ARRAY IN3(1536);
VARIABLE /CNT3,/RD3,/SCNT3,INCH3,INSR3,INMX3,INDR3,INBT3,INBUF3;
ARRAY IN4(1536);
VARIABLE /CNT4,/RD4,/SCNT4,INCH4,INSR4,INMX4,INDR4,INBT4,INBUF4;
 
FUNCTION PRNTIT(CNT,INSR,INBT,INCH,INMX,INDR,INBUF);  BEGIN
VARIABLE DUR;
INBUF←1535-512*INBT;  DUR←INDR/INSR/INCH;
PRINT "SRATE=",INSR," BITS=",12+INBT*6," NCHNS=",INCH,
" MAXAMP=",INMX," DUR=",DUR;
CNT←INBUF;
END;

FUNCTION READIN(RD);
BEGIN 		<DON'T FORGET TO INIT AND SCNT ← 0;
IF SCNT=0 THEN BEGIN  
  GETINF(INF,INSR,INBT,INCH,INMX,INDR); <HEADER IS READ INTO ARRAY INF.
  PRNTIT(CNT,INSR,INBT,INCH,INMX,INDR,INBUF);
  END;
SCNT←SCNT+1; 
IF SCNT > INDR THEN  BEGIN <CHECK TO SEE IF SMPL CNT IS EXCEEDED
   RD←0;  RETURN(RD); END;
IF CNT ≥ INBUF THEN BEGIN
   RDSMPL(INF,INBT);
   CNT←0;  END;
RD←INF(CNT);
CNT←CNT+1; <UPDATE THE COUNTER
RETURN(RD); END; 

FUNCTION READI2(RD2);
BEGIN 		<DON'T FORGET TO INIT AND SCNT ← 0;
IF SCNT2=0 THEN BEGIN  
  GETIN2(IN2,INSR2,INBT2,INCH2,INMX2,INDR2); <HEADER IS READ INTO ARRAY INF.
  PRNTIT(CNT2,INSR2,INBT2,INCH2,INMX2,INDR2,INBUF2);
  END;
SCNT2←SCNT2+1; 
IF SCNT2 > INDR2 THEN  BEGIN <CHECK TO SEE IF SMPL CNT IS EXCEEDED
   RD2←0;  RETURN(RD2); END;
IF CNT2 ≥ INBUF THEN BEGIN
   RDSMP2(IN2,INBT);
   CNT2←0;  END;
RD2←IN2(CNT2);
CNT2←CNT2+1; <UPDATE THE COUNTER
RETURN(RD2); END; 

FUNCTION READI3(RD3);
BEGIN 		<DON'T FORGET TO INIT AND SCNT ← 0;
IF SCNT3=0 THEN BEGIN  
  GETIN3(IN3,INSR3,INBT3,INCH3,INMX3,INDR3); <HEADER IS READ INTO ARRAY INF.
  PRNTIT(CNT3,INSR3,INBT3,INCH3,INMX3,INDR3,INBUF3);
  END;
SCNT3←SCNT3+1; 
IF SCNT3 > INDR THEN  BEGIN <CHECK TO SEE IF SMPL CNT3 IS EXCEEDED
   RD3←0;  RETURN(RD3); END;
IF CNT3 ≥ INBUF THEN BEGIN
   RDSMP3(IN3,INBT);
   CNT3←0;  END;
RD3←IN3(CNT3);
CNT3←CNT3+1; <UPDATE THE COUNTER
RETURN(RD3); END; 

FUNCTION READI4(RD4);
BEGIN 		<DON'T FORGET TO INIT AND SCNT4 ← 0;
IF SCNT4=0 THEN BEGIN  
  GETIN4(IN4,INSR4,INBT4,INCH4,INMX4,INDR4); <HEADER IS READ INTO ARRAY INF.
  PRNTIT(CNT4,INSR4,INBT4,INCH4,INMX4,INDR4,INBUF4);
  END;
SCNT4←SCNT4+1; 
IF SCNT4 > INDR THEN  BEGIN <CHECK TO SEE IF SMPL CNT4 IS EXCEEDED
   RD4←0;  RETURN(RD4); END;
IF CNT4 ≥ INBUF THEN BEGIN
   RDSMP4(IN4,INBT);
   CNT4←0;  END;
RD4←IN4(CNT4);
CNT4←CNT4+1; <UPDATE THE COUNTER
RETURN(RD4); END; 

<********************************************************************
VARIABLE /STER;
SETMAG;2 10
SEG(F6);0 0 1 100;
<SEG(F6);0 0 .7 20  0 50 1 80 0 100; <PUTS ENVELOPE ON INPUT SOUND.
INSTRUMENT READ;
OSCIL(P4,MAG/P2,P5);
STER←READIN(RD);
OUTA←OUTA+(1-P6)*U1*STER;
OUTB←OUTB+P6*U1*STER;
END;
INSTRUMENT READ2;
OSCIL(P4,MAG/P2,P5);
STER←READI2(RD2);
OUTA←OUTA+(1-P6)*U1*STER;
OUTB←OUTB+P6*U1*STER;
END;
INSTRUMENT READ3;
OSCIL(P4,MAG/P2,P5);
STER←READI3(RD3);
OUTA←OUTA+(1-P6)*U1*STER;
OUTB←OUTB+P6*U1*STER;
END;
INSTRUMENT READ4;
OSCIL(P4,MAG/P2,P5);
STER←READI4(RD4);
OUTA←OUTA+(1-P6)*U1*STER;
OUTB←OUTB+P6*U1*STER;
END;

OUTFILE←"OU.MSB";
SCNT←0;  <SCNT MUST BE SET TO ZERO BEFORE NOTE TO START READIN CORRECTLY!!
PLAY;READ 0  .37  0 2 F6 0; SCNT2←0; CLAR 0 .5 FS/4 300 F1 0 F4;
INFILE←"U";      <FILE NAME TO BE READ IN FOR NOTE ABOVE THIS LINE!!!
READ2 .2  .37  0 2 F6 1; SCNT3←0;
INFILE←"A";      <FILE NAME TO BE READ IN.
READ3 .4 .37  0 1.6 F6 0;  SCNT←0; 
INFILE←"I";      <FILE NAME TO BE READ IN.
CLAR .5 .7 F*2 400 F1 0 F4;
READ .6 .37  0 1.8 F1 1;
INFILE←"U";      <FILE NAME TO BE READ IN FOR NOTE ABOVE THIS LINE!!!
READ 1.2 .3   0 .8 F6 0;SCNT←0;
INFILE←"I";      <FILE NAME TO BE READ IN FOR NOTE ABOVE THIS LINE!!!
FINI;